package org.infodavid.common.model;

import org.infodavid.common.persistence.IBasicDataObject;
import org.infodavid.common.persistence.INamed;

/**
 * The Interface IGenericProperty.
 */
public interface IGenericProperty extends IBasicDataObject, INamed {

  /** The REA d_ only. */
  String READ_ONLY = "readOnly";

  /** The VALUE. */
  String VALUE = "value";

  /** The TYPE. */
  String TYPE = "type";

  /** The SCOPE. */
  String SCOPE = "scope";

  /** The constant MAX_LENGTH_VALUE. */
  int MAX_LENGTH_VALUE = 512;

  /** The constant MAX_LENGTH_TYPE. */
  int MAX_LENGTH_TYPE = 32;

  /** The constant MAX_LENGTH_SCOPE. */
  int MAX_LENGTH_SCOPE = 32;

  /**
   * Checks if is read only.
   * @return true, if is read only
   */
  boolean isReadOnly();

  /**
   * Sets the read only.
   * @param flag the new read only
   */
  void setReadOnly(boolean flag);

  /**
   * Gets the value.
   * @return the value
   */
  String getValue();

  /**
   * Sets the value.
   * @param value the new value
   */
  void setValue(String value);

  /**
   * Gets the scope.
   * @return the scope
   */
  String getScope();

  /**
   * Sets the scope.
   * @param value the new scope
   */
  void setScope(String value);

  /**
   * Gets the type.
   * @return the type
   */
  String getType();

  /**
   * Sets the type.
   * @param value the new type
   */
  void setType(String value);
}
